Switf 5 のアップデートについて話された内容をまとめました #WWDC19
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
こんにちは、モバイルアプリサービス部の田中孝明です。
What's New in Swift で話されていた内容をまとめました。
What's New in Swift
Swift is now the language of choice for a number of major frameworks across all of Apple's platforms, including SwiftUI, RealityKit and Create ML. Join us for a review of Swift 5.0 and an exploration of Swift 5.1, new in Xcode 11. Find out about the latest advancements in performance and safety. Discover new features in the language, and how they have enabled the development of these new frameworks.
ABIとモジュール安定化
ABI安定化
- ABI とは Application Binary Interface の略
- 実行時にプログラムの詳細を特定
- 互換性のあるABIにより、別々にコンパイルされたコードを実行時に対話させることができる
- ABIの安定性の前に、プログラムとフレームワークは両方とも同じコンパイラで構築される必要がある
- プログラムとフレームワークは異なるコンパイラ(Swift 5以降)で構築することができる
モジュール安定化
- SwiftライブラリとそれらがエクスポートするAPIは「モジュール」と呼ばれる
- モジュールファイルはコンパイラによって作成、使用される
- Swift 5.1で安定したテキスト形式のモジュールインタフェースファイルが導入された
パフォーマンスの向上
- Swift 4.2 と比べて、起動のオーバーヘッドが5%早くなった
- コードサイズも10%低下、最適化の場合は15%低下
Swift と Objective-C 間の高速ブリッジング
- NSDictionary から Dictionary のブリッジが1.6倍高速に
- ブリッジされた Swift の String に対して、NSString が実行された場合は15倍に
SwiftNIO
- SwiftNIOは、クロスプラットフォームの非同期イベント駆動型ネットワークアプリケーションフレームワーク
- SwiftNIOは、保守可能な高性能プロトコルサーバーおよびクライアントを迅速に開発するための、クロスプラットフォームの非同期イベント駆動型ネットワークアプリケーションフレームワーク
Swift Tooling と オープンソース
Docker
Language Server Protocol
標準ライブラリ
Vector
文字列補間
Opaque Result Types
-
戻りの型を抽象化
- APIは、同じ protocol に準拠した、様々な型を返します
- APIは同じ型を返しますが、実装の詳細を表しています
- 戻りの型を抽象化(Proposal: SE-0244)
Property Wrapper Types
-
ラッパー型はカスタムアクセスパターンを定義します
- プロパティは宣言に属性を追加することで、採用できます
DSLs (Domain Specific Languages)
- ツールのサポートが不可欠
- Swiftで埋め込みDSLを定義する
参考文献
- What's New in Swift
- ABI Stability and More
- SwiftNIO
- Swift Docker Image
- SourceKit-LSP
- Swift Evolution
まとめ
待望のABI安定化やSwiftUIへの下準備など、着々とアップデートされている様子が伺えました。Swiftの今後のアップデートもどんどんキャッチアップしていきたいと思います。